﻿Imports Fgv.Framework.UI
Imports LS.Leilao.Dominio

Partial Class UserControls_PessoaBuscaCadastro
    Inherits BaseUserControl

#Region "Atributos da pagina"

    Public Enum Visoes
        Busca
        Cadastro
    End Enum

    Public Property ApenasPesquisa() As Boolean
        Get
            If ViewState("_apenasPesquisa") Is Nothing Then ViewState("_apenasPesquisa") = False
            Return ViewState("_apenasPesquisa")
        End Get
        Set(ByVal value As Boolean)
            ViewState("_apenasPesquisa") = value
        End Set
    End Property

    Public Property HabilitaCadastro() As Boolean
        Get
            If ViewState("_habilitaCadastro") Is Nothing Then ViewState("_habilitaCadastro") = True
            Return ViewState("_habilitaCadastro")
        End Get
        Set(ByVal value As Boolean)
            ViewState("_habilitaCadastro") = value
        End Set
    End Property

    Public Property HabilitaAtualizacao() As Boolean
        Get
            If ViewState("_habilitaAtualizacao") Is Nothing Then ViewState("_habilitaAtualizacao") = True
            Return ViewState("_habilitaAtualizacao")
        End Get
        Set(ByVal value As Boolean)
            ViewState("_habilitaAtualizacao") = value
        End Set
    End Property

    Public Property HabilitaBotaoNovo() As Boolean
        Get
            Return btNovo.Visible
        End Get
        Set(ByVal value As Boolean)
            btNovo.Visible = value
        End Set
    End Property

    Public Property HabilitaBotaoVoltar() As Boolean
        Get
            Return btVoltar1.Visible
        End Get
        Set(ByVal value As Boolean)
            btVoltar1.Visible = value
        End Set
    End Property

    Public Property PessoaSelecionada() As Pessoa
        Get
            Return TryCast(ViewState("_pessoaSelecionada"), Pessoa)
        End Get
        Set(ByVal value As Pessoa)
            ViewState("_pessoaSelecionada") = value
        End Set
    End Property

    Public Property Visao() As Visoes
        Get
            Return mlt1.ActiveViewIndex
        End Get
        Set(ByVal value As Visoes)
            mlt1.ActiveViewIndex = value
        End Set
    End Property

#End Region

#Region "Delegates"

    Protected Delegate Sub PageDelegate()

    Private _onPessoaSelected As System.Delegate
    Public Property OnPessoaSelected() As System.Delegate
        Get
            Return _onPessoaSelected
        End Get
        Set(ByVal value As System.Delegate)
            _onPessoaSelected = value
        End Set
    End Property

#End Region

#Region "Classes Injetadas"

#End Region

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        If Not IsPostBack Then

        End If

    End Sub

#Region "Funcoes de Databind"

    Protected Sub DataBindGrdP1()
        Dim _pessoas As IList(Of Pessoa)

        _pessoas = Me.GetPessoas()

        GrdP1.DataSource = _pessoas
        GrdP1.DataBind()
    End Sub

    Public Sub DataBindVisaoCadastro()

        mlt1.ActiveViewIndex = Visoes.Cadastro

        Me.DataBindPessoaSelecionada()

        If Me.PessoaSelecionada Is Nothing Then
            btSalvar.Visible = True
            btAtualizar.Visible = False

        End If

    End Sub

    Protected Sub DataBindVisaoBusca()

        mlt1.ActiveViewIndex = Visoes.Busca

        If Me.ApenasPesquisa Then
            btNovo.Visible = False
        End If

    End Sub

    Protected Sub GrdP1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GrdP1.RowDataBound


        If e.Row.RowType = DataControlRowType.DataRow Then
            Dim _dataItem As Pessoa = CType(e.Row.DataItem, Pessoa)
            Dim _lkNome As LinkButton = CType(e.Row.FindControl("lkNome"), LinkButton)
            Dim _lbEmail As Label = CType(e.Row.FindControl("lbEmail"), Label)
            Dim _lbCidade As Label = CType(e.Row.FindControl("lbCidade"), Label)
            Dim _lbUF As Label = CType(e.Row.FindControl("lbUF"), Label)
            Dim _lbLogin As Label = CType(e.Row.FindControl("lbLogin"), Label)
            Dim _lbUsu As Label = CType(e.Row.FindControl("lbUsu"), Label)

            _lkNome.CommandArgument = _dataItem.Id
            _lkNome.Text = _dataItem.Nome
            _lbEmail.Text = _dataItem.Email
            _lbCidade.Text = _dataItem.Cidade
            _lbUF.Text = _dataItem.Uf
            If _dataItem.Usuario IsNot Nothing Then
                _lbUsu.Text = _dataItem.Usuario.Login
            Else
                _lbUsu.Text = " - "
            End If


        ElseIf e.Row.RowType = DataControlRowType.Header Then

        ElseIf e.Row.RowType = DataControlRowType.Footer Then

        ElseIf e.Row.RowType = DataControlRowType.EmptyDataRow Then

        End If

    End Sub

    Protected Sub DataBindPessoaSelecionada()

        If Me.PessoaSelecionada Is Nothing Then
            txNome2.Text = String.Empty
            txCidade2.Text = String.Empty
            txUF2.Text = String.Empty
            txIdent2.Text = String.Empty
            btSalvar.Visible = True
            btAtualizar.Visible = False
        Else
            txNome2.Text = Me.PessoaSelecionada.Nome
            txCidade2.Text = Me.PessoaSelecionada.Cidade
            txUF2.Text = Me.PessoaSelecionada.Uf
            txIdent2.Text = Me.PessoaSelecionada.DocumentoIdentificacao
            btSalvar.Visible = False
            btAtualizar.Visible = True
        End If
        

    End Sub

#End Region

#Region "Operacoes do Usuario"

    Protected Sub btBuscar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btBuscar.Click
        Me.DataBindGrdP1()
    End Sub

    Protected Sub btNovo_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btNovo.Click
        Me.PessoaSelecionada = Nothing
        Me.DataBindVisaoCadastro()
    End Sub

    Protected Sub SelecionarPessoa(ByVal sender As LinkButton, ByVal e As System.EventArgs)

        Dim _idPessoa As Long

        _idPessoa = CLng(sender.CommandArgument)
        Me.PessoaSelecionada = Me.GetPessoaPorId(_idPessoa)

        If Not Me.ApenasPesquisa Then
            Me.DataBindVisaoCadastro()
        End If

        If Me.OnPessoaSelected IsNot Nothing Then
            Me.OnPessoaSelected.DynamicInvoke()
        End If

    End Sub

    Protected Sub btVoltar1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btVoltar1.Click
        mlt1.ActiveViewIndex = Visao = Visoes.Busca
    End Sub

#End Region

#Region "Classes Auxiliares"

#End Region


    Protected Function GetPessoas() As IList(Of Pessoa)

        Dim _pessoas As IList(Of Pessoa)
        Dim _pessoa01, _pessoa02, _pessoa03, _pessoa04, _pessoa05 As Pessoa
        Dim _usuarios As IList(Of Usuario)

        _pessoas = New List(Of Pessoa)
        _usuarios = New List(Of Usuario)

        _pessoa01 = New Pessoa With {.Id = 1, .Nome = "Leonardo Santana", .Cidade = "Rio de Janeiro", .Uf = "RJ", .DocumentoIdentificacao = "123", .Email = "email@gmail.com"}
        _pessoa02 = New Pessoa With {.Id = 2, .Nome = "Ana Tereza", .Cidade = "Rio de Janeiro", .Uf = "RJ", .DocumentoIdentificacao = "245", .Email = "ana@gmail.com"}
        _pessoa03 = New Pessoa With {.Id = 3, .Nome = "Marco", .Cidade = "Rio de Janeiro", .Uf = "RJ", .DocumentoIdentificacao = "678", .Email = "marco@gmail.com"}
        _pessoa04 = New Pessoa With {.Id = 4, .Nome = "Antonio", .Cidade = "Rio de Janeiro", .Uf = "RJ", .DocumentoIdentificacao = "908", .Email = "antonio@gmail.com"}
        _pessoa05 = New Pessoa With {.Id = 5, .Nome = "Carlos", .Cidade = "São Paulo", .Uf = "SP", .DocumentoIdentificacao = "459", .Email = "carlos@gmail.com"}

        _pessoas.Add(New Pessoa() With {.Id = 6, .Nome = "Carlos", .Cidade = "São Paulo", .Uf = "SP", .DocumentoIdentificacao = "459", .Email = "carlos@gmail.com"})

        _usuarios.Add(New Usuario With {.Login = "LSANTANA", .Pessoa = _pessoa01, .Habilitado = True})
        _pessoa01.Usuario = _usuarios(0)
        _usuarios.Add(New Usuario With {.Login = "ANA", .Pessoa = _pessoa02, .Habilitado = True})
        _pessoa02.Usuario = _usuarios(1)

        _pessoas.Add(_pessoa01)
        _pessoas.Add(_pessoa02)
        _pessoas.Add(_pessoa03)
        _pessoas.Add(_pessoa04)
        _pessoas.Add(_pessoa05)

        Return _pessoas

    End Function

    Protected Function GetPessoaPorId(ByVal _id As Long) As Pessoa

        Dim _pessoas As IList(Of Pessoa)

        _pessoas = Me.GetPessoas()

        Dim q = From c In _pessoas Where c.Id = _id Select c

        Return q.First

    End Function

End Class
